package cn.edu.njust.service;

import cn.edu.njust.core.enums.SignInStatusEnum;
import cn.edu.njust.pojo.bo.PageBean;
import cn.edu.njust.pojo.po.User;
import org.apache.ibatis.annotations.Param;

import java.util.Collection;
import java.util.List;

public interface UserService {

    /**
     * 修改打卡状态
     *
     * @param id     用户id
     * @param status 最新状态
     */
    void updateSignInStatusById(Integer id, SignInStatusEnum status);

    /**
     * 分页查询
     *
     * @param currentPage 当前页码
     * @param pageSize    每页展示条数
     * @param user        查询条件
     * @return 分页查询结果
     */
    PageBean<User> selectUserList(Integer currentPage, Integer pageSize, User user);

    /**
     * 批量删除
     *
     * @param ids 删除的id集合
     */
    void deleteByIds(@Param("ids") Collection<Integer> ids);


    /**
     * 根据条件查询总数(辅导员界面 根据选择查询)
     *
     * @param currentPage 当前页码
     * @param pageSize    页面大小
     * @param user        查询条件
     * @return 用户信息
     */
    PageBean<User> selectByPageAndCondition(int currentPage, int pageSize, User user);

    /**
     * 重置密码
     *
     * @param ids 用户id集合
     * @since 3.0.0
     */
    void resetPasswordByIds(List<Integer> ids);

    /**
     * 分页查询未打卡的名单
     *
     * @param currentPage 当前页
     * @param pageSize    页面大小
     * @return 分页查询结果
     */
    PageBean<User> selectStudentInLeaves(int currentPage, int pageSize);

    /**
     * 打卡
     *
     * @since 3.0.0
     */
    void punchIn();
}
